package com.lin.manager.system.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lin.manager.common.resp.DataPage;
import com.lin.manager.system.dao.SysErrorLogDao;
import com.lin.manager.system.entity.SysErrorLogEntity;
import com.lin.manager.system.model.vo.ErrorLogVO;
import com.lin.manager.system.model.vo.LogQueryParamVO;
import com.lin.manager.system.service.SysErrorLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

/**
 * @作者: 林江
 * @创建时间: 2024-03-19 14:51:14
 * @功能:
 */
@Slf4j
@Service
public class SysErrorLogServiceImpl implements SysErrorLogService {

    @Autowired
    private SysErrorLogDao sysErrorLogDao;


    @Override
    public void addLog(ErrorLogVO errorLogVO) {
        SysErrorLogEntity errorLog = new SysErrorLogEntity();
        errorLog.setId(errorLogVO.getId());
        errorLog.setUserName(errorLogVO.getUserName());
        errorLog.setIp(errorLogVO.getIp());
        errorLog.setReqUri(errorLogVO.getReqUri());
        errorLog.setReqMethod(errorLogVO.getReqMethod());
        errorLog.setReqParams(errorLogVO.getReqParams());
        errorLog.setDescript(errorLogVO.getDescript());
        errorLog.setECode(errorLogVO.geteCode());
        errorLog.setEMsg(errorLogVO.geteMsg());
        errorLog.setCreateTime(errorLogVO.getCreateTime());
        sysErrorLogDao.insert(errorLog);

    }

    @Override
    public void delLog(Object id) {
        sysErrorLogDao.deleteById(id.toString());
    }

    @Override
    public DataPage<SysErrorLogEntity> listLogErrorByPage(LogQueryParamVO pageVO) {
        LambdaQueryWrapper<SysErrorLogEntity> wrapper = new QueryWrapper<SysErrorLogEntity>().lambda()
                .orderByDesc(SysErrorLogEntity::getCreateTime)
                .ge(StringUtils.hasText(pageVO.getStartTime()), SysErrorLogEntity::getCreateTime, pageVO.getStartTime())
                .le(StringUtils.hasText(pageVO.getEndTime()), SysErrorLogEntity::getCreateTime, pageVO.getEndTime());

        Page<SysErrorLogEntity> selectPage = sysErrorLogDao.selectPage(new Page<>(pageVO.getPageNum(), pageVO.getPageSize()), wrapper);
        return DataPage.<SysErrorLogEntity>builder().page(selectPage).build();
    }

}
